﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace LangRenGameLib.RoundInterface
{
    /// <summary>
    /// 轮次接口，继承此接口的话记得注册到对应房间运行类的调用列表内，不然没有作用
    /// </summary>
    interface IRound
    {
        /// <summary>
        /// 是技能吗
        /// </summary>
        /// <returns></returns>
        bool IsSkill();

        /// <summary>
        /// 当进入白天时，相当于“天亮了，昨晚xxx死了，猎人请行动”的时候
        /// </summary>
        bool OnToDay();

        /// <summary>
        /// 当进入黑夜时，相当于“放逐发言结束，天黑请闭眼”的时候
        /// </summary>
        bool OnToNight();

        /// <summary>
        /// 在黑夜过程中时会调用100次，即技能优先级，例如说1为“丘比特请睁眼”，2为“狼人请睁眼”
        /// </summary>
        /// <param name="round">现在是第几次</param>
        bool OnNightSkill(int round);

        /// <summary>
        /// 当有玩家开始发言时调用，即“1/2/3/....号玩家请发言的时候调用一次”
        /// </summary>
        /// <param name="PlayerID">是谁在说话</param>
        bool OnPlayerTalk(int PlayerID);

        /// <summary>
        /// 当有玩家停止发言后调用
        /// </summary>
        /// <param name="PlayerID">是谁停止了发言</param>
        bool EndPlayerTalk(int PlayerID);

        /// <summary>
        /// 在每个白天第一位玩家发言时该方法被额外调用一次
        /// </summary>
        bool OnStartPlayerTalk();

        /// <summary>
        /// 在每个白天最后一位玩家发言结束，进入投票阶段前调用一次
        /// </summary>
        bool EndAllPlayerTalk();
    }
}
